# 23.手写 instance of

  1. 首先获取类型的原型
  2. 然后获得对象的原型
  3. 然后一直循环判断对象的原型是否等于类型的原型,直到对象原型为  null,因为原型链最终为  null
function myInstanceof(left, right) {
  let proto = Object.getPrototypeOf(left), // 获取对象的原型, 不要用__proto__,MDN不推荐
      prototype = right.prototype; // 获取构造函数的 prototype 对象

  // 判断构造函数的 prototype 对象是否在对象的原型链上
  while (true) {
    if (!proto) return false;
    if (proto === prototype) return true;

    proto = Object.getPrototypeOf(proto);
  }
}

作者:CUGGZ
链接:https://juejin.cn/post/6946136940164939813
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Last Updated: 6/3/2024, 1:08:34 AM